const mongoose = require('mongoose');
// const bcrypt = require('bcryptjs');

const userSchema = new mongoose.Schema({
  account: {
    type: String,
    required: [true, '账号不能为空'],
    unique: true
  },
  password: {
    type: String,
    required: [true, '密码不能为空'],
    select: false // 默认查询不返回密码字段
  },
  name: {
    type: String,
    required: [true, '姓名不能为空']
  },
  role: {
    type: Number,
    required: [true, '角色不能为空'],
    enum: {
      values: [0, 1, 2, 3, 4],
      message: '角色必须为 0（客户）、1（客服）、2（站点）、3（维修员）、4（管理员）'
    },
    default: 0 // 新增默认值为0（客户）
  },
  address: {
    type: String,
    required: [true, '地址不能为空']
  },
  phone: {
    type: String,
    required: [true, '手机号不能为空'],
    match: [/^1[3-9]\d{9}$/, '手机号格式不正确']
  },
  employees: {
    type: [mongoose.Schema.Types.ObjectId],
    ref: 'User',
    default: []
  }
}, { timestamps: true });

// 密码加密中间件
// userSchema.pre('save', async function(next) {
//   if (!this.isModified('password')) return next();
//   this.password = await bcrypt.hash(this.password, 10);
//   next();
// });

// 密码校验方法
// userSchema.methods.matchPassword = async function(enteredPassword) {
//   return await bcrypt.compare(enteredPassword, this.password);
// };

module.exports = mongoose.model('User', userSchema);